#https://arlpy.readthedocs.io/en/latest/_static/bellhop.html
import pandas as pd
import numpy as np
import scipy as sp
from scipy import signal
import matplotlib.pyplot as plt1
import sklearn
from sklearn.preprocessing import normalize
import arlpy.uwapm as pm
import arlpy.plot as plt
pm.models()
# name : arlpy
# bottom_absorption : 0.1
# bottom_density : 1600
# bottom_roughness : 0
# bottom_soundspeed : 1600
# depth : 25
# depth_interp : linear
# frequency : 25000
# max_angle : 80
# min_angle : -80
# rx_depth : 10
# rx_range : 1000
# soundspeed : 1500
# soundspeed_interp : spline
# surface : None
# surface_interp : linear
# tx_depth : 5
# tx_directionality : None
# type : 2D
#http://www.marine-geo.org/tools/search/Files.php?data_set_uid=18936
#http://www.marine-geo.org/tools/search/Files.php?data_set_uid=18985 ['depth','temp','velocity']
#MGL1212NTMCS01 shallow
#T5_00077.EDF
shallow = pd.read_csv('T5_00077.EDF',names=['depth','temp','velocity'],header=0,delimiter='\t',skiprows=34).drop(['temp'],axis=1)
#MGL1212MCS05 deep
#T5_00026.EDF
deep = pd.read_csv('T5_00026.EDF',names=['depth','temp','velocity'],header=0,delimiter='\t',skiprows=34).drop(['temp'],axis=1)
#MGL1212MCS07 mid
#T5_00026.EDF
mid = pd.read_csv('T5_00026.EDF',names=['depth','temp','velocity'],header=0,delimiter='\t',skiprows=34).drop(['temp'],axis=1)
#Define sound speed profile
#ssp = [#sound speed profile
# [ 0.0, 1540], # 1540 m/s at the surface
# [10, 1530], # 1530 m/s at 10 m depth
# [20, 1532], # 1532 m/s at 20 m depth
# [25, 1533], # 1533 m/s at 25 m depth
# [30, 1535], # 1535 m/s at the seabed
# [1500, 1480]
#]
freq = 50
deep_depth = 1500
mid_depth = 500
shallow_depth = 50
#grab values from dataframe
ssp_deep = deep.values
ssp_mid = mid.values
ssp_shallow = shallow.values
#find index nearest to depth
val, i = 0, 0
while(val<deep_depth):
i = i + 1
val = ssp_deep[i,0]
val, j = 0, 0
while(val<mid_depth):
j = j + 1
val = ssp_mid[j,0]
val, k = 0, 0
while(val<shallow_depth):
k = k + 1
val = ssp_shallow[k,0]
#truncate to that
ssp_deep = ssp_deep[:i,:]
ssp_mid = ssp_mid[:j,:]
ssp_shallow = ssp_shallow[:k,:]
#step to downsample SSP
d_step = 10
s_step = 1
#downsample
ssp_deep = ssp_deep[0:-1:d_step,:]
ssp_shallow = ssp_shallow[0:-1:s_step,:]
ssp_mid = ssp_mid[0:-1:d_step,:]
#Start of SSP must be 0m
ssp_deep[0][0] = 0
ssp_shallow[0][0] = 0
ssp_mid[0][0] = 0
#replace value with final depth
ssp_deep[-1][0] = deep_depth
ssp_mid[-1][0] = mid_depth
ssp_shallow[-1][0] = shallow_depth
#Define bathymetry
#define environments
env_deep = pm.create_env2d(
name= 'DEEP',
depth = deep_depth, #ocean depth
frequency = freq, #majority freq???
rx_depth = 10, #streamer depth
rx_range = 8000, #streamer length
tx_depth = 10, #airgun depth
soundspeed = ssp_deep
)
env_mid = pm.create_env2d(
name= 'MID',
depth = mid_depth, #ocean depth
frequency = freq, #majority freq???
rx_depth = 10, #streamer depth
rx_range = 8000, #streamer length
tx_depth = 10, #airgun depth
soundspeed = ssp_mid
)
env_shallow = pm.create_env2d(
name= 'SHALLOW',
depth = shallow_depth, #ocean depth
frequency = freq, #majority freq???
rx_depth = 10, #streamer depth
rx_range = 8000, #streamer length
tx_depth = 10, #airgun depth
soundspeed = ssp_shallow
)
pm.plot_ssp(env_deep)
pm.plot_ssp(env_shallow)
#deep
#pm.print_env(env_deep)
rays = pm.compute_eigenrays(env_deep)
pm.plot_rays(rays, env=env_deep, width=900)
#mid
rays = pm.compute_eigenrays(env_mid)
pm.plot_rays(rays, env=env_mid, width=900)
#shallow
rays = pm.compute_eigenrays(env_shallow)
pm.plot_rays(rays, env=env_shallow, width=900)